/*******************************************************************************
*
*   FILE NAME:
*       TimeSpan.h - TimeSpan class definition
*
*   DESCRIPTION:
*       Represents a time interval.
*
*******************************************************************************/
#pragma once

#include "Types.h"

class TimeSpan
{
public:
    static const uint64 TicksPerDay = 864000000000;
    static const uint64 TicksPerHour = 36000000000;
    static const uint64 TicksPerMinute = 600000000;
    static const uint64 TicksPerSecond = 10000000;
    static const uint64 TicksPerMillisecond = 10000;

    TimeSpan( void );
    TimeSpan( uint64 ticks );
    TimeSpan( const TimeSpan& other );
    ~TimeSpan( void );

    TimeSpan& operator=( const TimeSpan& other );

    uint32 GetDays( void );
    uint32 GetHours( void );
    uint32 GetMinutes( void );
    uint32 GetSeconds( void );
    uint32 GetMilliseconds( void );

    uint64 GetTicks( void );

    float64 GetTotalDays( void );
    float64 GetTotalHours( void );
    float64 GetTotalMinutes( void );
    float64 GetTotalSeconds( void );
    float64 GetTotalMilliseconds( void );

protected:

private:
    uint64 mTicks;
};
